//
//  ZzEmotionPackage.swift
//  EmojiView
//
//  Created by 张少霞 on 16/6/1.
//  Copyright © 2016年 zsx. All rights reserved.
//
//在这里把数组转换为二维数组

import UIKit
//每页显示的表情数据的个数
let EmoticonPageCount = 21
let EmoticonColCount = 7
let EmoticonRowCount = 3




class ZzEmotionPackage: NSObject {
    
//    定义title
    var title: String?
//    定义一个二维数组
    var sectionEmoticon: [[ZzEmotion]] = [[ZzEmotion]]()
//初始化  数组里面存着字典就是每个emotions 的所对应的数组
    init(id: String, title: String, array: [[String : String]]) {
        self.title = title
        super.init()
        
        //遍历字典类型的数组 字典转模型
        var tempArray = [ZzEmotion]()
        var index = 0
        for item in array {
            let e = ZzEmotion(id: id,dict: item)
            print(e.chs)
            //添加到数组中
            tempArray.append(e)
            index+=1
            //每隔20个表情添加一个删除的模型
            if index == 20 {
                //添加一个删除的模型
                let delete = ZzEmotion(isDelete: true)
                //添加到数组中
                tempArray.append(delete)
                //重置 index
                index = 0
            }
        }

    
        //操作删除模型的数据完毕后 就应该看每组的最后一页能够装满21个表情
        //如果不能装满21个表情 添加空白表情
        let delta = tempArray.count % 21
        print(delta)
        //如果是需要添加空白表情才进入分支
        //如果不判断会造成删除按钮多添加一个
        if delta != 0 {
            for _ in delta..<20 {
                //添加空白的表情模型
                let space = ZzEmotion(isEmpty: true)
                tempArray.append(space)
            }
            //最后一个添加一个删除的模型
            //添加一个删除的模型
            let delete = ZzEmotion(isDelete: true)
            //添加到数组中
            tempArray.append(delete)
        }
        
        
        //转换为二维数组
        sectionEmoticon = sectionEmoticons(tempArray)
        
        
    }
    
    
    
    //需要将分组的表情的数据的数组处理成二维数组  [HMEmoticon]  -> [[HMEmoticon]]
    private func sectionEmoticons(array: [ZzEmotion]) -> [[ZzEmotion]] {
        
        //完成对 array 的分页截取 每页截取21个
        let pageCount = (array.count - 1) / EmoticonPageCount + 1
        //分页截取  在swift中的数组没有截取的方法
        //但是swift中的数组 和 OC中的数组可以无缝转换
        var sectionArr = [[ZzEmotion]]()
        for i in 0..<pageCount {
            let loc = i * EmoticonPageCount
            var length = EmoticonPageCount
            //如果loc + length > 数组的数量 需要修正长度
            if loc + length > array.count {
                //修改length
                length = array.count - loc
            }
            let range = NSMakeRange(loc, length)
            let subArray = (array as NSArray).subarrayWithRange(range)
            sectionArr.append(subArray as! [ZzEmotion])
        }
        return sectionArr
    }
    

    
    
    
}
